package com.hospital.register.core.repository;

import com.hospital.register.dto.core.api.DepartmentPageDto;
import com.hospital.register.model.core.Department;
import com.hospital.register.vo.core.api.DepartmentPageVo;
import org.springframework.data.domain.Page;

import java.util.List;

/**
 * 访问科室数据
 *
 * @author 刘逸晖
 */
public interface DepartmentRepository {

    /**
     * 查询指定科室是否存在
     *
     * @param hoscode 医院编号
     * @param depcode 科室编号
     * @return 是否存在
     */
    boolean exists(String hoscode, String depcode);

    /**
     * 新增科室
     *
     * @param department 科室信息
     * @return 是否新增成功
     */
    boolean insert(Department department);


    /**
     * 根据医院编号和科室编号更新
     *
     * @param department 科室信息
     * @return 是否更新成功
     */
    boolean update(Department department);

    /**
     * 分页查询科室
     *
     * @param dto 条件
     * @return 科室列表
     */
    Page<DepartmentPageVo> findPage(DepartmentPageDto dto);

    /**
     * 删除科室
     *
     * @param hoscode 所属医院的编号
     * @param depcode 预删除科室的编号
     * @return 是否删除成功
     */
    boolean remove(String hoscode, String depcode);

    /**
     * 根据医院编号查询科室列表
     *
     * @param hoscode 医院编号
     * @return 科室列表
     */
    List<Department> findByHoscode(String hoscode);

    /**
     * 根据医院编号和科室编号查询
     *
     * @param hoscode 医院编号
     * @param depcode 科室编号
     * @return 科室信息
     */
    Department findOne(String hoscode, String depcode);

}
